package com.xiaoq.shop.entity;

import com.xiaoq.MongoEntity;
import com.xiaoq.shop.dto.TagsDTO;
import com.xiaoq.shop.dto.UGCContentDTO;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.NotEmpty;
import org.mongodb.morphia.annotations.Entity;

import java.util.ArrayList;
import java.util.List;

/**
 * @author qudongxin520 created on 2016/7/8.
 * @author xinpeng
 */
@Entity(value = "shop_collection",noClassnameStored = true)
public class ShopEntity extends MongoEntity {

    private Long shopCode;

    @ApiModelProperty(hidden = true)
    private String userId;

    //---------------------------小店基本属性--------------------------------------------
    @ApiModelProperty(value ="小店类型",dataType = "java.lang.String",allowableValues = "NORMAL,SPECIA,STUDIO",required = true)
    private String type; //小店类型   常规小店（NORMAL） 特殊的小店（SPECIAL）  工作室(STUDIO)

    @NotEmpty(message = "shop name null")
    @ApiModelProperty(value = "小店名称",dataType = "java.lang.String",required = true)
    private String name;  //小店名称

    @ApiModelProperty(hidden = true)
    private String logoUrl;//小店logo

    @ApiModelProperty(hidden = true)
    private String backgroundImgUrl;//小店主页背景图

    @ApiModelProperty(value ="小店宣传语",dataType = "java.lang.String",required = true)
    private String slogan;//小店宣传语

    @NotEmpty(message = "shop hightlights null ")
    @ApiModelProperty(value ="小店亮点特色",dataType = "java.lang.String",required = true)
    private String hightlights;//小店亮点特色

    @NotEmpty(message = "shop address null")
    @ApiModelProperty(value ="地址",dataType = "java.lang.String",required = true)
    private String address;

    @ApiModelProperty(value="小店标签",dataType = "java.util.List")
    private List<TagsDTO> tags;

    @ApiModelProperty(hidden = true)
    private int state = StateEnum.NORMAL.value(); //小店状态

    //---------------------------店长属性--------------------------------------------
    @NotEmpty
    @ApiModelProperty(value ="店长名称",dataType = "java.lang.String")
    private String  shopownerDisplayName;//店长

    @NotEmpty
    @ApiModelProperty(value ="店长电话",dataType = "java.lang.String")
    private String shopownerCellphoneNumber;//店长电话
    @NotEmpty
    @ApiModelProperty(value ="微信号",dataType = "java.lang.String")
    private String wechatNumber;


    //---------------------------小店扩展属性--------------------------------------------
    @ApiModelProperty(value ="主营范围",dataType = "java.lang.String")
    private String  mainArea;//主营范围

    @ApiModelProperty(value ="城市市区",dataType = "java.lang.String")
    private String cityDistrict;

    @ApiModelProperty(value ="经度",dataType = "java.lang.String")
    private String longitude; //小店的经度

    @ApiModelProperty(value ="纬度",dataType = "java.lang.String")
    private String latitude;  //小店的纬度

    @ApiModelProperty(value ="固定电话",dataType = "java.lang.String")
    private String telephoneNumber ; //小店固定电话

    @ApiModelProperty(value ="人均消费",dataType = "java.lang.String")
    private String averageSpend;//人均消费

    @ApiModelProperty(value ="营业日期",dataType = "java.lang.String")
    private String workDay;//营业日期

    @ApiModelProperty(value ="营业开始时间",dataType = "java.lang.String")
    private String businessStartTime;
    @ApiModelProperty(value ="营业结束时间",dataType = "java.lang.String")
    private String businessEndTime;

    @ApiModelProperty(value ="停车位置信息",dataType = "java.lang.String")
    private String parkingInfo;//停车位信息

    @ApiModelProperty(value ="图文环境",dataType = "java.util.List")
    private List<UGCContentDTO> imageTextEnvironments = new ArrayList<>();//店内图文环境


    //---------------------------小店资质认证属性--------------------------------------------
    @ApiModelProperty(value ="营业执照",dataType = "java.lang.String",hidden = true)
    private String bizLicense;//营业执照
    @NotEmpty
    private String locationAddress;



    //---------------------------小店装修属性--------------------------------------------



    public enum StateEnum {

        DELETE(1),NORMAL(2),OVERDUE(3),FORBIDDEN(4);

        private int code;

        StateEnum(int code){
            this.code = code;
        }

        public int value(){
            return this.code;
        }

    }



	public Long getShopCode() {
		return shopCode;
	}



	public void setShopCode(Long shopCode) {
		this.shopCode = shopCode;
	}



	public String getUserId() {
		return userId;
	}



	public void setUserId(String userId) {
		this.userId = userId;
	}



	public String getType() {
		return type;
	}



	public void setType(String type) {
		this.type = type;
	}



	public String getName() {
		return name;
	}



	public void setName(String name) {
		this.name = name;
	}



	public String getLogoUrl() {
		return logoUrl;
	}



	public void setLogoUrl(String logoUrl) {
		this.logoUrl = logoUrl;
	}



	public String getBackgroundImgUrl() {
		return backgroundImgUrl;
	}



	public void setBackgroundImgUrl(String backgroundImgUrl) {
		this.backgroundImgUrl = backgroundImgUrl;
	}



	public String getSlogan() {
		return slogan;
	}



	public void setSlogan(String slogan) {
		this.slogan = slogan;
	}



	public String getHightlights() {
		return hightlights;
	}



	public void setHightlights(String hightlights) {
		this.hightlights = hightlights;
	}



	public String getAddress() {
		return address;
	}



	public void setAddress(String address) {
		this.address = address;
	}



	public List<TagsDTO> getTags() {
		return tags;
	}



	public void setTags(List<TagsDTO> tags) {
		this.tags = tags;
	}



	public int getState() {
		return state;
	}



	public void setState(int state) {
		this.state = state;
	}



	public String getShopownerDisplayName() {
		return shopownerDisplayName;
	}



	public void setShopownerDisplayName(String shopownerDisplayName) {
		this.shopownerDisplayName = shopownerDisplayName;
	}



	public String getShopownerCellphoneNumber() {
		return shopownerCellphoneNumber;
	}



	public void setShopownerCellphoneNumber(String shopownerCellphoneNumber) {
		this.shopownerCellphoneNumber = shopownerCellphoneNumber;
	}



	public String getWechatNumber() {
		return wechatNumber;
	}



	public void setWechatNumber(String wechatNumber) {
		this.wechatNumber = wechatNumber;
	}



	public String getMainArea() {
		return mainArea;
	}



	public void setMainArea(String mainArea) {
		this.mainArea = mainArea;
	}



	public String getCityDistrict() {
		return cityDistrict;
	}



	public void setCityDistrict(String cityDistrict) {
		this.cityDistrict = cityDistrict;
	}



	public String getLongitude() {
		return longitude;
	}



	public void setLongitude(String longitude) {
		this.longitude = longitude;
	}



	public String getLatitude() {
		return latitude;
	}



	public void setLatitude(String latitude) {
		this.latitude = latitude;
	}



	public String getTelephoneNumber() {
		return telephoneNumber;
	}



	public void setTelephoneNumber(String telephoneNumber) {
		this.telephoneNumber = telephoneNumber;
	}



	public String getAverageSpend() {
		return averageSpend;
	}



	public void setAverageSpend(String averageSpend) {
		this.averageSpend = averageSpend;
	}



	public String getWorkDay() {
		return workDay;
	}



	public void setWorkDay(String workDay) {
		this.workDay = workDay;
	}



	public String getBusinessStartTime() {
		return businessStartTime;
	}



	public void setBusinessStartTime(String businessStartTime) {
		this.businessStartTime = businessStartTime;
	}



	public String getBusinessEndTime() {
		return businessEndTime;
	}



	public void setBusinessEndTime(String businessEndTime) {
		this.businessEndTime = businessEndTime;
	}



	public String getParkingInfo() {
		return parkingInfo;
	}



	public void setParkingInfo(String parkingInfo) {
		this.parkingInfo = parkingInfo;
	}



	public List<UGCContentDTO> getImageTextEnvironments() {
		return imageTextEnvironments;
	}



	public void setImageTextEnvironments(List<UGCContentDTO> imageTextEnvironments) {
		this.imageTextEnvironments = imageTextEnvironments;
	}



	public String getBizLicense() {
		return bizLicense;
	}



	public void setBizLicense(String bizLicense) {
		this.bizLicense = bizLicense;
	}



	public String getLocationAddress() {
		return locationAddress;
	}



	public void setLocationAddress(String locationAddress) {
		this.locationAddress = locationAddress;
	}




}
